/**
 * 定义日志消息类, 进行日志中间消息的存储:
 *      1.日志输入时间       过滤日志输出时间
 *      2.日志等级           进行日志过滤分析
 *      3.源文件名称
 *      4.源代码行号         定位出现错误的代码位置
 *      5.线程ID             过滤出错线程
 *      6.日志主体消息
 *      7.日志器名称
 */

#ifndef MESSAGE_H
#define MESSAGE_H

#include "util.hpp"
#include "level.hpp"
#include <thread>

namespace Log
{
    struct LogMessage
    {
        time_t _ctime;          // 日志产生时间戳
        LogLevel::level _level; // 日志等级
        size_t _line;           // 行号
        std::thread::id _tid;   // 线程ID
        std::string _file;      // 源码文件名
        std::string _logger;    // 日志器名
        std::string _payload;   // 有效消息数据

        /// @brief 
        /// @param level        日志等级
        /// @param line         行号
        /// @param file         文件名
        /// @param logger       日志器名
        /// @param msg          主体消息
        LogMessage(LogLevel::level level,
                   size_t line,
                   const std::string file,
                   const std::string logger,
                   const std::string msg) : _ctime(util::Date::getTime()),
                                            _level(level),
                                            _line(line),
                                            _tid(std::this_thread::get_id()),
                                            _file(file),
                                            _logger(logger),
                                            _payload(msg) {}
    };
}
#endif